home *** CD-ROM | disk | FTP | other *** search
- $INCLUDE "REGNAMES.INC"
- %PS = 16384
- %A1 = %PS + 00
- %A2 = %PS + 02
- %A3 = %PS + 04
- %A4 = %PS + 06
- %A5 = %PS + 08
- %A6 = %PS + 10
-
- %A6Low = %A6+1
- stasten$=" ESC = Ende A bis F = Laufwerk X = Format Y = Quick-Format Z = Kopieren"
- DIM sektoren(5),tracks(5),heads(5),fat(5),sekProCluster(5),ready(5)
-
- COLOR 3,1
- CLS
-
- laufwerk=-1
-
- CALL Balken(1,1,"ATUtilities Disk Transfer - Medium-Installation")
- LOCATE 2,1
- PRINT "Copyright (C) 1993 by Thomas Dreibholz - All rights reserved."
-
- REG %AX,(1*256)+29
- CALL INTERRUPT &H0B
- offset=REG(%DI)
-
- IF offset<>-1 THEN
- CALL ZeigeLaufwerke
- CALL Tasten
- ELSE
- CALL Balken(5,1,"ATUtilities Disk Transfer ist noch nicht aktiv!")
- CALL Balken(6,1,"Laden Sie zuerst das Utility auf dem Amiga und rufen PREP.EXE erneut auf.")
- CALL Balken(12,1," beliebige Taste = Ende")
- BEEP
- WHILE INKEY$="":WEND
- END IF
-
- COLOR 15,0
- CLS
- END
-
-
- SUB ZeigeLaufwerke SHARED
- DEF SEG = &HD400
-
- LOCATE 4,1
- FOR i=0 TO 5
- POKEI offset+%A1,100
- POKEI offset+%A2,i
- CALL CallAndWait
-
- PRINT CHR$(65+i);" Laufwerk";i+1;": ";
- IF PEEKI(offset+%A2)=0 THEN
- POKEI offset+%A1,5
- CALL CallAndWait
-
- DEF SEG = &HD400
- sektoren(i)=PEEKI(offset+%A2)
- tracks(i)=PEEKI(offset+%A3)
- heads(i)=PEEKI(offset+%A4)
- fat(i)=PEEKI(offset+%A5)
- sekProCluster(i)=PEEK(offset+%A6Low)
- CALL XPrint("Sektoren:",sektoren(i),6,5)
- CALL XPrint("Spuren:",tracks(i),6,5)
- CALL XPrint("S/L-Kpfe:",heads(i),4,5)
- ready(i)=1
- ELSE
- ready(i)=0
- PRINT "Nicht verfgbar";
- END IF
- PRINT ""
- NEXT
- END SUB
-
- SUB Tasten SHARED
- CALL Balken(11,1,stasten$)
-
- ende=1
- WHILE ende=1
- i$=""
- WHILE i$="": i$=INKEY$ : WEND
- IF i$=CHR$(27) THEN ende=0
- i$=UCASE$(i$)
- IF i$>="A" AND i$<="F" THEN
- CALL Bearbeite(ASC(i$)-65)
- ELSEIF i$="X" THEN
- CALL Formatiere(0)
- ELSEIF i$="Y" THEN
- CALL Formatiere(1)
- ELSEIF i$="Z" THEN
- CALL Kopiere
- END IF
- WEND
- END SUB
-
- SUB XPrint(text$,zahl,stellen,leer) SHARED
- PRINT text$;
- x$=STR$(zahl)
- x$=STRING$(stellen-LEN(x$)," ")+x$
- PRINT x$;
- PRINT SPC(leer)
- END SUB
-
- SUB CallAndWait SHARED
- REG %AX,(7*256)+29
- CALL INTERRUPT &H0B
- REG %AX,(8*256)+29
- CALL INTERRUPT &H0B
- END SUB
-
- SUB Kopiere SHARED
- wahl=-1
- IF laufwerk<>-1 THEN
- ltasten$=" ESC = Zurck A bis F = Ziellaufwerk whlen "
- CALL Balken(11,1,ltasten$)
- l$="Bitte geben Sie das Ziellaufwerk an: "
- CALL Balken(21,1,l$+"_")
- ende2=1
- WHILE ende2=1
- i$=""
- WHILE i$="": i$=INKEY$ : WEND
- IF i$=CHR$(27) THEN ende2=0 : wahl=-1
- IF i$=CHR$(13) AND wahl<>-1 THEN ende2=0
- i$=UCASE$(i$)
- IF i$>="A" AND i$<="F" THEN
- num=ASC(i$)-65
- IF ready(num)=1 AND num<>laufwerk THEN
- CALL Balken(21,1,l$+i$)
- wahl=num
- CALL Balken(11,1,ltasten$+"Eingabetaste = Kopieren")
- ELSE
- SOUND 1500,2
- END IF
- END IF
- WEND
- CALL EntfBalken(21,1)
- END IF
- IF wahl<>-1 THEN
- t$=""
- IF sektoren(laufwerk)<>sektoren(wahl) THEN
- t$="Quelllaufwerk und Ziellaufwerk haben eine unterschiedliche Sektorenanzahl"
- END IF
- IF tracks(laufwerk)<>tracks(wahl) THEN
- t$="Quelllaufwerk und Ziellaufwerk haben eine unterschiedliche Spurenanzahl"
- END IF
- IF heads(laufwerk)<>heads(wahl) THEN
- t$="Quelllaufwerk und Ziellaufwerk haben unterschiedlich viele S/L-Kpfe"
- END IF
- IF t$="" THEN
- CALL SelectDrive(laufwerk)
- FOR i=0 TO tracks(laufwerk)-1
- CALL Balken(21,1,"Kopiere Track"+STR$(i+1)+" von"+STR$(tracks(laufwerk))+".")
- CALL Copy(i,wahl)
- x=PEEKI(offset+%A2)
- IF x<>0 THEN
- IF x=1 THEN t$="Nicht genug Chip-Speicher fr Spur."
- IF x=2 THEN t$="Fehler beim Lesen der Spur. (CMD_READ/Read())."
- IF x=3 THEN t$="Fehler beim Schreiben der Spur (TD_FORMAT/Write())."
- IF x=4 THEN t$="Fehler beim berprfen der Spur (CMD_READ)."
- BEEP
- CALL Balken(11,1," beliebige Taste = Zurck")
- CALL Balken(21,1,"Fehler beim Kopieren von Spur"+STR$(i+1)+".")
- CALL Balken(22,1,t$)
- WHILE INKEY$="":WEND
- CALL EntfBalken(21,1)
- CALL EntfBalken(22,1)
- GOTO Fertig
- END IF
- NEXT
- ELSE
- BEEP
- CALL Balken(11,1," beliebige Taste = Zurck")
- CALL Balken(21,1,t$)
- WHILE INKEY$="":WEND
- END IF
- CALL EntfBalken(21,1)
- END IF
- Fertig:
- CALL Balken(11,1,stasten$)
- END SUB
-
- SUB Bearbeite(num) SHARED
- LOCATE 13,1
- IF ready(num)=1 THEN
- laufwerk=num
- PRINT "Aktives Laufwerk:";num+1
- fSektoren=sektoren(num)
- fTracks=tracks(num)
- fHeads=heads(num)
- fFATSektoren=fat(num)
- fSekProCluster=sekProCluster(num)
- LOCATE 15,1
- PRINT "Sektoren= ";fSektoren
- PRINT "Spuren= ";fTracks
- PRINT "S/L-Kpfe= ";fHeads
- PRINT "FAT-Sektoren= ";fFATSektoren
- PRINT "Sektoren/Cluster=";fSekProCluster
- ELSE
- SOUND 1500,2
- END IF
- END SUB
-
- SUB Balken(z,s,text$) SHARED
- LOCATE z,s
- COLOR 3,6
- PRINT text$+STRING$(80-LEN(text$)," ")
- COLOR 3,1
- END SUB
-
- SUB EntfBalken(z,s) SHARED
- LOCATE z,s
- PRINT STRING$(80," ")
- END SUB
-
- SUB Formatiere(quick) SHARED
- IF laufwerk<>-1 THEN
- CALL Balken(11,1," Y = Formatierung starten N = Zurck")
- CALL Balken(21,1,"Wollen Sie das Medium wirklich Formatieren ?")
- CALL Balken(22,1,"Alle gesicherten Daten werden gelscht! [Y/N]")
- i$=""
- WHILE i$="" : i$=INKEY$ : WEND
- i$=UCASE$(i$)
- CALL EntfBalken(21,1)
- CALL EntfBalken(22,1)
- IF i$="Y" THEN
- CALL Balken(21,1,"Das Medium wird formatiert. Bitte warten...")
- CALL SelectDrive(laufwerk)
- IF quick=0 THEN
- FOR i=0 TO fTracks-1
- CALL Balken(22,1,"Formatiere Spur"+STR$(i+1)+" von"+STR$(fTracks)+".")
- CALL Format(i)
- x=PEEKI(offset+%A2)
- IF x<>0 THEN
- BEEP
- CALL Balken(11,1," beliebige Taste = Zurck")
- CALL Balken(21,1,"Fehler beim Formatieren von Spur"+STR$(i+1)+".")
- IF x=1 THEN t$="Nicht genug Chip-Speicher fr Spur."
- IF x=2 THEN t$="Fehler beim Formatieren (TD_FORMAT)."
- IF x=3 THEN t$="Fehler beim berprfen (CMD_READ)."
- CALL Balken(22,1,t$)
- WHILE INKEY$="":WEND
- GOTO Okay
- END IF
- NEXT
- END IF
-
- REM Boot-Sektor schreiben
- POKE offset+&H00,0
- POKE offset+&H01,0
- POKE offset+&H02,0
- i$="-TD- 1.0"
- FOR i=0 TO 7
- POKE offset+&H03+i,ASC(MID$(i$,i+1,1))
- NEXT
- POKEI offset+&H0B,512
- POKE offset+&H0D,fSekProCluster
- POKEI offset+&H0E,1
- POKE offset+&H10,1
- POKEI offset+&H11,112
- POKEI offset+&H13,fSektoren
- POKE offset+&H15,&HF8
- POKEI offset+&H16,fFATSektoren
- POKEI offset+&H18,fSektoren/fTracks/fHeads
- POKEI offset+&H1A,fHeads
- POKEI offset+&H1C,1
- FOR i=&H1E TO &HFF
- POKE offset+i,0
- NEXT
- CALL XWrite(0,1)
-
- REM File Allocation Table schreiben
- FOR i=0 TO fFATSektoren*512
- POKE offset+i,0
- NEXT
- POKE offset+0,&HFB
- POKE offset+1,&HFF
- CALL XWrite(1,fFATSektoren)
-
- REM Hauptverzeichnis
- FOR i=0 TO 2048
- POKE offset+i,0
- NEXT
- n$="EMPTY DISK "+CHR$(8)+CHR$(0)
- FOR i=0 TO 12
- POKE offset+i,ASC(MID$(n$,i+1,1))
- NEXT
- CALL XWrite(fFATSektoren+1,4)
- CALL Update
-
- END IF
- Okay:
- CALL Balken(11,1,stasten$)
- CALL EntfBalken(21,1)
- CALL EntfBalken(22,1)
- END IF
- END SUB
-
- SUB XWrite(sektor,length) SHARED
- POKEI offset+%A1,1
- POKEI offset+%A2,length
- POKEI offset+%A3,sektor
- CALL CallAndWait
- END SUB
-
- SUB Format(spur) SHARED
- POKEI offset+%A1,10
- POKEI offset+%A2,spur
- CALL CallAndWait
- END SUB
-
- SUB Copy(spur,ziel) SHARED
- POKEI offset+%A1,20
- POKEI offset+%A2,spur
- POKEI offset+%A3,ziel
- CALL CallAndWait
- END SUB
-
- SUB Update SHARED
- POKEI offset+%A1,3
- CALL CallAndWait
- END SUB
-
- SUB SelectDrive(num) SHARED
- POKEI offset+%A1,100
- POKEI offset+%A2,num
- CALL CallAndWait
- END SUB